home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / assert.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-05-08  |  3.4 KB  |  115 lines

  1. /* Copyright (C) 1991,1992,1994-2001,2003,2004 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. /*
  20.  *    ISO C99 Standard: 7.2 Diagnostics    <assert.h>
  21.  */
  22.  
  23. #ifdef    _ASSERT_H
  24.  
  25. # undef    _ASSERT_H
  26. # undef    assert
  27. # undef __ASSERT_VOID_CAST
  28.  
  29. # ifdef    __USE_GNU
  30. #  undef assert_perror
  31. # endif
  32.  
  33. #endif /* assert.h    */
  34.  
  35. #define    _ASSERT_H    1
  36. #include <features.h>
  37.  
  38. #if defined __cplusplus && __GNUC_PREREQ (2,95)
  39. # define __ASSERT_VOID_CAST static_cast<void>
  40. #else
  41. # define __ASSERT_VOID_CAST (void)
  42. #endif
  43.  
  44. /* void assert (int expression);
  45.  
  46.    If NDEBUG is defined, do nothing.
  47.    If not, and EXPRESSION is zero, print an error message and abort.  */
  48.  
  49. #ifdef    NDEBUG
  50.  
  51. # define assert(expr)        (__ASSERT_VOID_CAST (0))
  52.  
  53. /* void assert_perror (int errnum);
  54.  
  55.    If NDEBUG is defined, do nothing.  If not, and ERRNUM is not zero, print an
  56.    error message with the error text for ERRNUM and abort.
  57.    (This is a GNU extension.) */
  58.  
  59. # ifdef    __USE_GNU
  60. #  define assert_perror(errnum)    (__ASSERT_VOID_CAST (0))
  61. # endif
  62.  
  63. #else /* Not NDEBUG.  */
  64.  
  65. __BEGIN_DECLS
  66.  
  67. /* This prints an "Assertion failed" message and aborts.  */
  68. extern void __assert_fail (__const char *__assertion, __const char *__file,
  69.                unsigned int __line, __const char *__function)
  70.      __THROW __attribute__ ((__noreturn__));
  71.  
  72. /* Likewise, but prints the error text for ERRNUM.  */
  73. extern void __assert_perror_fail (int __errnum, __const char *__file,
  74.                   unsigned int __line,
  75.                   __const char *__function)
  76.      __THROW __attribute__ ((__noreturn__));
  77.  
  78.  
  79. /* The following is not at all used here but needed for standard
  80.    compliance.  */
  81. extern void __assert (const char *__assertion, const char *__file, int __line)
  82.      __THROW __attribute__ ((__noreturn__));
  83.  
  84.  
  85. __END_DECLS
  86.  
  87. # define assert(expr) \
  88.   (__ASSERT_VOID_CAST ((expr) ? 0 :                          \
  89.                (__assert_fail (__STRING(expr), __FILE__, __LINE__,    \
  90.                        __ASSERT_FUNCTION), 0)))
  91.  
  92. # ifdef    __USE_GNU
  93. #  define assert_perror(errnum) \
  94.   (__ASSERT_VOID_CAST (!(errnum) ? 0 :                          \
  95.                (__assert_perror_fail ((errnum), __FILE__, __LINE__,   \
  96.                           __ASSERT_FUNCTION), 0)))
  97. # endif
  98.  
  99. /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
  100.    which contains the name of the function currently being defined.
  101.    This is broken in G++ before version 2.6.
  102.    C9x has a similar variable called __func__, but prefer the GCC one since
  103.    it demangles C++ function names.  */
  104. # if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
  105. #   define __ASSERT_FUNCTION    __PRETTY_FUNCTION__
  106. # else
  107. #  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
  108. #   define __ASSERT_FUNCTION    __func__
  109. #  else
  110. #   define __ASSERT_FUNCTION    ((__const char *) 0)
  111. #  endif
  112. # endif
  113.  
  114. #endif /* NDEBUG.  */
  115.